package temporisateur;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.text.JTextComponent;

import vue.Fenetre;

import Modele.Parseur;

public class TempoKeyListener implements ActionListener, KeyListener{

	static TempoThread th= new TempoThread(3000);
	String precVal;
	Object contenu;
	String evt;
	
	public TempoKeyListener(JComboBox obj, String evt)
	{
		this.evt = evt;
		//th = new TempoThread(this, timeLimit);
		obj.addActionListener(this);
		obj.getEditor().getEditorComponent().addKeyListener(this);
		
		contenu = obj;
	}
	
	public TempoKeyListener(JTextField obj, String evt)
	{
		this.evt = evt;
		//th = new TempoThread(this, timeLimit);
		obj.addActionListener(this);
		obj.addKeyListener(this);
		contenu = obj;
	}
	
	public String getObjVal()
	{
		if(contenu instanceof JComboBox)
			return ((JTextComponent) ((JComboBox)contenu).getEditor().getEditorComponent()).getText();
			//return ((JComboBox)contenu).getSelectedItem().toString();
		else if(contenu instanceof JTextField)
			return ((JTextField)contenu).getText();
		else
		{
			System.err.println("Erreur dans le tempokeylistener");
			return "";
		}
	}
	
	@Override
	public void keyPressed(KeyEvent e) {	
		System.out.println(th.trig+" - "+th.time+" - "+precVal+" - AC VAL "+getObjVal());
		if(!th.trig)
		{
			precVal = getObjVal();
		}
		th.refresh(this);
	}

	@Override
	public void keyReleased(KeyEvent e) {}

	@Override
	public void keyTyped(KeyEvent e) {}

	@Override
	public void actionPerformed(ActionEvent e) {
		th.refresh(this);
		th.clear();
		/*
		System.out.println(th.trig+" - "+th.time+" - "+precVal+" - AC VAL "+getObjVal());
		if(!th.trig)
		{
			precVal = getObjVal();
		}
		th.refresh(this);*/
	}
	
	public static void debutProc()
	{
		Parseur.INSTANCE.clearFilter();
		
		Parseur.INSTANCE.filterFull(Fenetre.INSTANCE.filtre1.getText(), Fenetre.INSTANCE.filtre2.getSelectedItem(), Fenetre.INSTANCE.filtre3.getSelectedItem(), Fenetre.INSTANCE.filtre4.getText(), Fenetre.INSTANCE.filtre5.getText());
		/*
		if(!Fenetre.INSTANCE.filtre1.getText().equals(""))
			Parseur.INSTANCE.filterDate(Fenetre.INSTANCE.filtre1.getText());
		
		if(Fenetre.INSTANCE.filtre2.getSelectedItem() != null && !((String)Fenetre.INSTANCE.filtre2.getSelectedItem()).equals(""))
			Parseur.INSTANCE.filtrerCommande((String)Fenetre.INSTANCE.filtre2.getSelectedItem());
		
		if(Fenetre.INSTANCE.filtre3.getSelectedItem() != null && !((String)Fenetre.INSTANCE.filtre3.getSelectedItem()).equals(""))
			Parseur.INSTANCE.filtrerOrigine((String)Fenetre.INSTANCE.filtre3.getSelectedItem());
		
		if(!Fenetre.INSTANCE.filtre4.getText().equals(""))
			Parseur.INSTANCE.filtrerTarget(Fenetre.INSTANCE.filtre4.getText());
			*/
	}
	
	public void proc()
	{
		/*
		if(precVal == null || !precVal.equals(getObjVal()))
		{
			if(evt.equals("f1"))
				Parseur.INSTANCE.filterDate(Fenetre.INSTANCE.filtre1.getText());
			else if(evt.equals("f3"))
				Parseur.INSTANCE.filtrerOrigine((String)Fenetre.INSTANCE.filtre3.getSelectedItem());
			else if(evt.equals("f4"))
				Parseur.INSTANCE.filtrerTarget(Fenetre.INSTANCE.filtre4.getText());
			System.out.println("PROC ! "+evt);
		}
		*/
	}
	 
	public static void finProc()
	{
		Fenetre.INSTANCE.liste_log_contenu.fireChange();
	}
}
